/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package riaxprez;

import java.io.File;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ColorPicker;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ComboBoxBuilder;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

/**
 *
 * @author Vincent
 */
public class ViewForm{
    Scene scene;
    Stage primaryStage;
    BorderPane root;
    HBox hb;
    HBox bb;
    GridPane gridpane;
    //ArrayList JAVAFX2
    private final ObservableList strings = FXCollections.observableArrayList(
            "Informatique", "Télécommunication",
            "Génie électrique", "Architecture",
            "Chimie", "Génie mécanique",
            "Génie Civile"
            );
    File file;
    
    //Déclaration des labels
    Label lbTitle;
    Label lbNom;
    Label lbPrenom;

    Label lbNomPrenom;
    Label lbColorTheme;
    Label lbDate;
    Label lbTransition;
    Label lbFiliere;
    Label lbSave;
    Label lbError;

    //Déclaration champ texte
    TextField tfNomPrenom;
    final TextField tfSave = new TextField();;

    //Déclaration des boutons
    Button btnParcourir;
    Button btnOK;
    RadioButton btRadioFondu;
    RadioButton btRadioAutre;
    ToggleGroup tg;
    
    ColorPicker colorPicker;
    ComboBox cb;
    Text title;
        
    public ViewForm(){
        primaryStage = new Stage();
        init(primaryStage);
        primaryStage.show();
    }
    
    private void init(Stage primaryStage){
        //Déclaration des labels
        lbTitle = new Label("Création d'un nouveau projet");    
        lbNomPrenom = new Label("Nom et prénom : ");
        lbColorTheme = new Label("Couleur thème : ");
        lbDate = new Label("Date : ");
        lbTransition = new Label("Transition : ");
        lbFiliere = new Label("Filière : ");
        lbSave = new Label("Emplacement de sauvegarde : ");
        lbError = new Label("");
        
        //Déclaration champ texte
        tfNomPrenom = new TextField();
        /*tfNomPrenom.textProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> ov, String t, String t1) {
                if(tfNomPrenom.getText().equals("") || tfNomPrenom.getText().trim().equals("")){
                    lbError.setText("Veuillez remplir tous champs du formulaire !");
                }
            }
        });*/
        tfNomPrenom.textProperty().addListener(new InputMaskChecker(InputMaskChecker.TEXTONLY, tfNomPrenom));
        
        //Déclaration des boutons
        btnParcourir = new Button("Parcourir...");
        btnParcourir.setOnAction(new EventHandler<ActionEvent>(){

            @Override
            public void handle(ActionEvent t) {
                FileChooser fileChooser = new FileChooser();
                file = fileChooser.showSaveDialog(null);
                if(file != null) {
                    tfSave.setText(file.getPath());
                }
            }
            
        });
        btnOK = new Button("Créer le projet");
        
        
        colorPicker = new ColorPicker();
        
        btRadioFondu = new RadioButton("Fondu");
        btRadioFondu.setUserData("Fondu");
        btRadioAutre = new RadioButton("Zoom");
        btRadioAutre.setUserData("Zoom");
        tg = new ToggleGroup();
        btRadioAutre.setToggleGroup(tg);
        btRadioFondu.setToggleGroup(tg);
        //Création d'une liste déroulante à partir d'une arrayList
        cb = ComboBoxBuilder.create()
                .id("Combobox")
                .promptText("Choisissez une filière...")
                .items(FXCollections.observableArrayList(strings.subList(0, 6))).build();
        
        primaryStage.setTitle("Formulaire de création de projet");
        
        //On créé le groupe root principal
        root = new BorderPane();
        root.setPadding(new Insets(10,50,50,50));
        
        hb = new HBox();
        hb.setPadding(new Insets(20,20,20,30));
        title = new Text("Création d'un nouveau projet");
        title.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
        hb.setAlignment(Pos.CENTER);
        hb.getChildren().add(title);
        
        bb = new HBox();
        bb.setPadding(new Insets(20,20,20,30));
        bb.setAlignment(Pos.CENTER);
        bb.getChildren().add(btnOK);
        
        gridpane = new GridPane();
        gridpane.setPadding(new Insets(10,50,50,50));
        gridpane.setHgap(10);
        gridpane.setVgap(15);
        
        gridpane.add(lbNomPrenom,0,2);
        gridpane.add(tfNomPrenom,1,2);
        gridpane.add(lbFiliere, 0, 4);
        gridpane.add(cb,1,4);
        gridpane.add(lbTransition,0,6);
        gridpane.add(btRadioFondu,1,6);
        gridpane.add(btRadioAutre,2,6);
        gridpane.add(lbColorTheme,0,8);
        gridpane.add(colorPicker,1,8);
        gridpane.add(lbSave, 0, 10);
        gridpane.add(tfSave,1,10);
        gridpane.add(btnParcourir,2,10);
        gridpane.add(lbError,0,12);
        
        root.setTop(hb);
        root.setCenter(gridpane);
        root.setBottom(bb);
        scene = new Scene(root, 800, 600);
        primaryStage.setTitle("Formulaire création de projet");
        primaryStage.setScene(scene);
    }

}
